package main

import (
	"errors"
	"fmt"
)

func echo(request string) (response string, err error) {
	if request == "" {
		err = errors.New("empty request")
		return
	}
	response = fmt.Sprintf("echo: %s", request)
	return
}

func main() {
	// 外部函数返回一个闭包
	closure := outerFunc()

	// 调用闭包并打印结果
	fmt.Println(closure())
	fmt.Println(closure())
	fmt.Println(closure())
	fmt.Println(closure())
}

// 外部函数返回闭包
func outerFunc() func() int {
	count := 0 // 外部变量

	// 内部函数作为闭包返回
	return func() int {
		count++ // 访问并操作外部变量
		return count
	}
}
